`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer:
//
// Create Date:   17:01:36 11/21/2014
// Design Name:   MainRxFifoRx
// Module Name:   D:/Libraries/Documents/Ingenieria en computacion/Arquitectura Computadoras/Xilin/uart-arquitectura-2014/MainRxFifoRxTest.v
// Project Name:  UART
// Target Device:  
// Tool versions:  
// Description: 
//
// Verilog Test Fixture created by ISE for module: MainRxFifoRx
//
// Dependencies:
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments: Test para ver que funcione el BRG, junto con el Receptor Rx y la fifo
// Al parecer esta funcionando bien el conjuto
////////////////////////////////////////////////////////////////////////////////

module MainRxFifoRxTest;

	// Inputs
	reg clk;
	reg reset;
	reg rx;
	reg rd_rx;

	// Outputs
	wire [7:0] read_data;
	wire full;
	wire empty;
	wire done_rx;
	wire [7:0] salida;
	// Instantiate the Unit Under Test (UUT)
	MainRxFifoRx uut (
		.clk(clk), 
		.reset(reset), 
		.rx(rx), 
		.rd_rx(rd_rx), 
		.read_data(read_data), 
		.full(full), 
		.empty(empty),
		.done_rx(done_rx),
		.salida(salida)
	);

	initial begin
		// Initialize Inputs
		clk = 0;
		reset = 1;
		rx = 1;
		rd_rx = 0;

		// Wait 100 ns for global reset to finish
		#100;
      reset = 0;  
		#10400; //32 * 325 - es 32 xq si bien el el tick counter cuenta hasta 16
					//La simulacion hace el switch del clock cada 2, como se sincroniza por posedge
					//tienen que pasar 2 ciclos para que genere un tick un clico en alto y otro en bajo
		// Add stimulus here
		rx = 0; //bit Start
		#10400;			
		rx = 1; //b[0]		//Byte a transmitir 01010101
		#10400;
		rx = 0; //b[1]
		#10400;
		rx = 1; //b[2]
		#10400; 
		rx = 0; //b[3]
		#10400;
		rx = 1; //b[4]
		#10400;
		rx = 0; //b[5]
		#10400;
		rx = 1; //b[6]
		#10400;
		rx = 0; //b[7]
		#10400;
		rx = 1; // Bit de fin
		rd_rx = 1;
		#3000
		rd_rx = 0;
		#20800;  
		
		//Otro Bit
		rx = 0; //bit Start
		#10400;			
		rx = 1; //b[0]		//Byte a transmitir 00001111
		#10400;
		rx = 1; //b[1]
		#10400;
		rx = 1; //b[2]
		#10400; 
		rx = 1; //b[3]
		#10400;
		rx = 0; //b[4]
		#10400;
		rx = 0; //b[5]
		#10400;
		rx = 0; //b[6]
		#10400;
		rx = 0; //b[7]
		#10400;
		rx = 1; // Bit de fin
		//Leo, en la salida deberia cambirase a 00001111
		rd_rx = 1;
		#1000
		rd_rx = 0;

	end
always begin
 #1; clk = ~clk;
 end

endmodule

